package service.array;

import domain.dto.RoleDto;
import domain.entity.Role;
import domain.vo.RoleVo;
import domain.vo.Result;
import service.IRoleService;
import service.IUserService;



public class RoleService extends Baseservice<Role,RoleDto, RoleVo> implements IRoleService {


    private IUserService userService;

    private static IRoleService singleton;

    private RoleService(){
        date=new Role[DATA_SIZE+1];
        temp =new RoleVo[DATA_SIZE];
    }
    public static IRoleService getInstance(){
        if(singleton==null){
            singleton=new RoleService();
        }
        return singleton;
    }

@Override
      RoleVo convertToVo(Role role){

        return  new  RoleVo(role.getId(),role.name,role.dateScope);
    }
    @Override
     Role createEntity(RoleDto dto, int id){

        return new Role(id,dto.name,dto.dateScope);
    }
@Override
     void updateEntity(RoleDto dto, Role role ){
        role.name=dto.name;
        role.dateScope=dto.dateScope;
    }

@Override
    public  Result delete(int id) {
        if(!existById(id)){
            return Result.failure("删除失败，不存在该数据");
        }
        if(userService == null){
            userService= UserService.getInstance();
        }
        if(userService.roleInUse(id)){
            return Result.failure("删除失败，还有用户具有该角色，不能删除");
        }
        date[id]=null;
        return Result.success("删除成功",null);
    }
}
